<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <script src="https://cdn.bootcdn.net/ajax/libs/axios/1.2.1/axios.js"></script>
    <style>
        .loadingbox {
            position: absolute;
            top: 0;
            left: 0;
            width: 100%;
            height: 100%;
            background: rgba(0, 0, 0, 0.9);
            display: none;
            transition: 1s all ease;
        }
        
        .loadingbox img {
            position: absolute;
            top: 50%;
            left: 50%;
            transform: translate(-50%, -50%);
        }
    </style>
</head>

<body>
    <button>获取数据</button>
    <div class="loadingbox">
        <img src="https://img.zcool.cn/community/017ccc599d4688a80121ad7bc36541.gif" alt="">
    </div>
    <script>
        // 获取ul和按钮
        let btns = document.querySelectorAll('button');

        // 1.设置请求拦截器 - 请求发送之前执行
        axios.interceptors.request.use((config) => {
            console.log(config);

            console.log(1);

            // 1. 仪式感
            document.querySelector('.loadingbox').style.display = 'block';

            // 2. 补充配置信息
            config.baseURL = 'http://api.zhibao.com'
                // headers

            // 必须要返回config
            return config;
        })

        axios.interceptors.request.use((config) => {
            console.log(config);

            console.log(2);
            // 1. 仪式感
            document.querySelector('.loadingbox').style.display = 'block';

            // 2. 补充配置信息
            config.baseURL = 'http://api.zhibao.com'
                // headers

            // 必须要返回config
            return config;
        })

        axios.interceptors.request.use((config) => {
            console.log(config);

            console.log(3);
            // 1. 仪式感
            document.querySelector('.loadingbox').style.display = 'block';

            // 2. 补充配置信息
            config.baseURL = 'http://api.zhibao.com'
                // headers

            // 必须要返回config
            return config;
        })

        axios.interceptors.request.use((config) => {
            console.log(config);

            console.log(4);

            // 1. 仪式感
            document.querySelector('.loadingbox').style.display = 'block';

            // 2. 补充配置信息
            config.baseURL = 'http://api.zhibao.com'
                // headers

            // 必须要返回config
            return config;
        })


        // 2. 设置响应拦截器 - 请求响应之后执行
        // 参数1：响应成功时执行。
        // 参数2：响应失败时执行。
        axios.interceptors.response.use((res) => {
            console.log(res);

            console.log(1);

            // 1. 仪式感
            document.querySelector('.loadingbox').style.display = 'none';

            //2. 优化响应内容
            return res.data;
        }, (rea) => {
            console.log("失败了", rea.response.status);

            return '抱歉，请求出现了问题，原因是' + rea.response.status;
        })

        axios.interceptors.response.use((res) => {
            console.log(res);

            console.log(2);

            // 1. 仪式感
            document.querySelector('.loadingbox').style.display = 'none';

            //2. 优化响应内容
            return res.data;
        }, (rea) => {
            console.log("失败了", rea.response.status);

            return '抱歉，请求出现了问题，原因是' + rea.response.status;
        })

        axios.interceptors.response.use((res) => {
            console.log(res);

            console.log(3);

            // 1. 仪式感
            document.querySelector('.loadingbox').style.display = 'none';

            //2. 优化响应内容
            return res.data;
        }, (rea) => {
            console.log("失败了", rea.response.status);

            return '抱歉，请求出现了问题，原因是' + rea.response.status;
        })

        // 3. 设置点击事件
        btns[0].onclick = async function() {
            let abc = await axios('/students123')
            document.querySelector('.loadingbox').style.display = 'none';
            console.log(abc);

        }
    </script>
</body>

</html>